home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 46 / Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso / -in_the_mag- / reader_requests / scilab / tests / matopt.dia.ref < prev    next >
Text File  |  1999-09-16  |  8KB  |  325 lines

  1.  
  2. Leps=2.e-5;
  3.  
  4. bs=10.*ones(1,5);bi=-bs;x0=0.12*bs;epsx=1.e-15*x0;xopt=.1*bs;
  5.  
  6. [f,x,g]=optim('genros',x0,'in');
  7.  norm of projected gradient lower than   0.0000000D+00
  8.  
  9.  
  10. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  11.  
  12. [f,x,g]=optim('genros',x0,'gc','in');
  13. optim stops:  maximum number of calls to f is reached
  14.  
  15.  
  16. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  17.  
  18. //
  19.  
  20.  
  21. [f,x,g]=optim('genros',x0,'nd','in');
  22. optim stops:  maximum number of calls to f is reached
  23.  
  24.  
  25. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  26.  
  27.  
  28. [f,x,g]=optim('genros',x0,'qn',1,'in');
  29.  norm of projected gradient lower than   0.0000000D+00
  30.  
  31.  
  32. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  33.  
  34. [f,x,g]=optim('genros',x0,'gc',1,50,'in');
  35. optim stops:  maximum number of calls to f is reached
  36.  
  37.  
  38. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  39.  
  40. //
  41.  
  42. [f,x,g]=optim('genros',x0,'nd',1,50,'in');
  43.  optimization stops because too small variations for x
  44.  
  45.  
  46. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  47.  
  48.  
  49. [f,x1,g]  =optim('genros',x0,   'ar',100,6,'in');
  50. optim stops: maximum number of iterations is reached
  51.  
  52.  
  53. [f,x,g,to]=optim('genros',x0,   'ar',100,3,'in');
  54. optim stops: maximum number of iterations is reached
  55.  
  56.  
  57. [f,x,g,to]=optim('genros',x ,to,'ar',100,3,'in');
  58. optim stops: maximum number of iterations is reached
  59.  
  60.  
  61. if norm(x-x1)/norm(x-xopt) > 0.1 then  bugmes();quit;end
  62.  
  63. [f,x1,g]=optim('genros','b',bi,bs,x0,'ar',100,6,'in');
  64. optim stops: maximum number of iterations is reached
  65.  
  66.  
  67. [f,x,g,to]=optim('genros','b',bi,bs,x0,'ar',100,3,'in');
  68. optim stops: maximum number of iterations is reached
  69.  
  70.  
  71. [f,x,g]   =optim('genros','b',bi,bs,x,to,'ar',100,3,'in');
  72. optim stops: too small variations in gradient direction
  73.  
  74.  
  75. if norm(x-x1)/norm(x-xopt) > 0.1 then  bugmes();quit;end
  76.  
  77. [f,x,g]=optim('genros',x0,'ar','in');
  78.  norm of projected gradient lower than   0.0000000D+00
  79.  
  80.  
  81. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  82.  
  83. [f,x,g]=optim('genros',x0,'ar',100,'in');
  84.  norm of projected gradient lower than   0.0000000D+00
  85.  
  86.  
  87. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  88.  
  89. [f,x,g]=optim('genros',x0,'ar',100,100,'in');
  90.  norm of projected gradient lower than   0.0000000D+00
  91.  
  92.  
  93. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  94.  
  95. [f,x,g]=optim('genros',x0,'ar',100,100,%eps,'in');
  96.  norm of projected gradient lower than   0.0000000D+00
  97.  
  98.  
  99. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  100.  
  101. [f,x,g]=optim('genros',x0,'ar',100,100,%eps,%eps,'in');
  102.  norm of projected gradient lower than   0.0000000D+00
  103.  
  104.  
  105. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  106.  
  107. [f,x,g]=optim('genros',x0,'ar',100,100,10.*%eps,%eps,epsx,'in');
  108.  norm of projected gradient lower than   0.0000000D+00
  109.  
  110.  
  111. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  112.  
  113. [f,x,g]=optim('genros',x0,'gc','ar',100,100,%eps,%eps,epsx,'in');
  114. optim stops:  maximum number of calls to f is reached
  115.  
  116.  
  117. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  118.  
  119. //
  120.  
  121. [f,x,g]=optim('genros','b',bi,bs,x0,'in');
  122.  end of optimization (linear search fails)
  123.  
  124.  
  125. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  126.  
  127. [f,x,g]=optim('genros','b',bi,bs,x0,'gc','in');
  128.  at last iteration f decreases by less than   0.0000000D+00
  129.  
  130.  
  131. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  132.  
  133. [f,x]=optim('genros','b',bi,bs,x0,'ar',100,100,1.d-8,'in');
  134.  norm of projected gradient lower than   1.0000000D-08
  135.  
  136.  
  137. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  138.  
  139. [f,x,g]=optim('genros',..
  140.    'b',bi,bs,x0,'gc','ar',100,100,%eps,%eps,epsx,'in');
  141.  at last iteration f decreases by less than   2.2204460D-16
  142.  
  143.  
  144. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  145.  
  146. [f,x,g,to,td]=optim('genros',x0,'in','sd');
  147.  norm of projected gradient lower than   0.0000000D+00
  148.  
  149.  
  150. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  151.  
  152. [f,x,g,ti]=optim('genros',x0,'gc','in','si');
  153. optim stops:  maximum number of calls to f is reached
  154.  
  155.  
  156. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  157.  
  158. [f,x,g,to,ti,td]=optim('genros',x0,to,'in','si','sd');
  159.  norm of projected gradient lower than   0.0000000D+00
  160.  
  161.  
  162. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  163.  
  164. [f,x,g,td]=optim('genros',..
  165.    'b',bi,bs,x0,'gc','ar',100,100,%eps,%eps,epsx,'in','sd');
  166.  at last iteration f decreases by less than   2.2204460D-16
  167.  
  168.  
  169. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  170.  
  171. [f,x,g,ti]=optim('genros',x0,'gc','ar',100,100,%eps,'in','si');
  172. optim stops:  maximum number of calls to f is reached
  173.  
  174.  
  175. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  176.  
  177. [f,x,g,ti,td]=optim('genros',..
  178.     x0,'gc','ar',100,100,%eps,'in','si','sd');
  179. optim stops:  maximum number of calls to f is reached
  180.  
  181.  
  182. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  183.  
  184. [f,x,g,ti,td]=optim('genros',..
  185.     x0,'gc','ar',100,100,%eps,'in','ti',ti,'td',td,'si','sd');
  186. optim stops:  maximum number of calls to f is reached
  187.  
  188.  
  189. if abs(f-1+norm(x-xopt) ) > Leps then bugmes();quit;end
  190.  
  191. //
  192.  
  193. //********************************************************************
  194.  
  195. //
  196.  
  197. bs=[5 5];bi=-bs;x0=1.05*[1 1];xopt=[1 1];
  198.  
  199. deff('[f,g,ind]=rose(x,ind)', 'a=x(2)-x(1)^2 , b=1-x(2) ,...
  200. f=50.*a**2 + b**2 , g(1)=-400.*x(1)*a , g(2)=200.*a -2.*b ');
  201.  
  202. comp(rose);
  203.  
  204. //[f,x,g,tr]=optim(rose,x0,'qn','ar',50);if abs(f+norm(x-xopt)) > Leps then bugmes();quit;end
  205.  
  206. //[f,x,g]=optim(rose,x0,tr,'ar',50);if abs(f+norm(x-xopt)) > Leps then bugmes();quit;end
  207.  
  208. [f,x,g]=optim(rose,x0,'gc','ar',50);if abs(f+norm(x-xopt)) > Leps then bugmes();quit;end
  209.  norm of projected gradient lower than   0.0000000D+00
  210.  
  211.  
  212. //
  213.  
  214. [f,x,g]=optim(rose,x0,'nd','ar',50);
  215. optim stops:  maximum number of calls to f is reached
  216.  
  217.  
  218. if abs(f+norm(x-xopt)) > Leps then bugmes();quit;end
  219.  
  220.  
  221. [f,x,g]=optim(rose,'b',bi,bs,x0,'qn','ar',25);
  222.  end of optimization (linear search fails)
  223.  
  224.  
  225. if abs(f+norm(x-xopt)) > Leps then bugmes();quit;end
  226.  
  227. [f,x,g]=optim(rose,'b',bi,bs,x0,'gc','ar',50);
  228.  end of optimization (linear search fails)
  229.  
  230.  
  231. if abs(f+norm(x-xopt)) > Leps then bugmes();quit;end
  232.  
  233. [f,x,g,td]=optim(rose,x0,'gc','ar',50,'sd');
  234.  norm of projected gradient lower than   0.0000000D+00
  235.  
  236.  
  237. if abs(f+norm(x-xopt)) > Leps then bugmes();quit;end
  238.  
  239. [f,x,g,ti]=optim(rose,x0,'gc','ar',50,'si');
  240.  norm of projected gradient lower than   0.0000000D+00
  241.  
  242.  
  243. if abs(f+norm(x-xopt)) > Leps then bugmes();quit;end
  244.  
  245. [f,x,g,ti,td]=optim(rose,x0,'gc','ar',50,'si','sd');
  246.  norm of projected gradient lower than   0.0000000D+00
  247.  
  248.  
  249. if abs(f+norm(x-xopt)) > Leps then bugmes();quit;end
  250.  
  251. //
  252.  
  253. // penalization (see doc)
  254.  
  255. //
  256.  
  257. // min (x1^2 +x2^2)/2 ; x1>=0, x1 + x2 =1 (solution [0.5 0.5] )
  258.  
  259. deff('[f,g,ind]=sip2(x,ind)',..
  260. ' f= [ x(1)+x(2)-1, -x(1), (x(1)^2+x(2)^2)/2],..
  261.   g= [ 1, -1, x(1); 1,  0, x(2)] ');
  262.  
  263. cpen=50; ne=1; nc=2;bi=[0 0]; bs=[2 2];
  264.  
  265. deff('[fpen,gpen,ind]=sipn(x,ind,sip1,ne,nc,cpen)',...
  266. ['[f,g,indic]=sip1(x,ind)';
  267. 'if indic < 0 then ind=indic, return, end';
  268. 'if nc >ne then for i=ne+1:nc, f(i)=maxi([0 f(i)]), end,end';
  269. 'fpen=f(nc+1) + cpen*norm(f(1:nc))^2/2';
  270. 'if ind=2 then return,end';
  271. 'gpen=g(:,nc+1)';
  272. 'if ne > 0 then';
  273. '   for i=1:ne, gpen=gpen + cpen*f(i)*g(:,i),end,end';
  274. 'if nc > ne then';
  275. ' for i=ne+1:nc, if f(i) > 0 then gpen=gpen + cpen*f(i)*g(:,i),end,end;end;'])
  276.  
  277. comp(sipn);
  278.  
  279. [f,x,g]=optim(list(sipn,sip2,ne,nc,cpen),...
  280.               'b',bi,bs,[1 1],'ar',20,20,1.e-15);
  281.  norm of projected gradient lower than   1.0000000D-15
  282.  
  283.  
  284. if norm(x-[0.5 0.5]) + norm(g) > 0.1 then bugmes();quit;end
  285.  
  286. //********************************************************************
  287.  
  288. deff('[f,g,ind]=ndsim(x,ind)', 'y=a*x-b;f=norm(y,2)^2;g=2*a''*y')
  289.  
  290. a=rand(2,2);b=eye(a);
  291.  
  292. [f,x,g]=optim(ndsim,eye(2,2));
  293.  norm of projected gradient lower than   9.4021785D-17
  294.  
  295.  
  296. if norm(x-inv(a))>Leps then bugmes();quit;end
  297.  
  298.  
  299. deff('[f,g,ind]=ndsim(x,ind)', 'y=a*x-b;f=sum(abs(y));g=a''*sign(y)')
  300. Warning :redefining function: ndsim                   
  301.  
  302.  
  303. a=rand(2,2);b=[1;0];ai=inv(a);
  304.  
  305. [f,x,g]=optim(ndsim,[1;0],'nd');
  306.  end of optimization
  307.  
  308.  
  309. if norm(x-ai(:,1))>Leps then bugmes();quit;end
  310.  
  311.  
  312. //deff('[f,g,ind]=ndsim(x,ind)', [
  313.  
  314. //'y=a*x-b;f=max(abs(y)),sel=abs(y)==f'
  315.  
  316. //'g=a(sel,:)''*sign(y(sel))'])
  317.  
  318. //a=rand(2,2);b=[1;0];ai=inv(a);
  319.  
  320. //[f,x,g]=optim(ndsim,[1;0],'nd');
  321.  
  322. //if norm(x-ai(:,1))>Leps then bugmes();quit;end
  323.  
  324.  
  325.